package com.changanw.middleware.schedule.annotation;



import com.changanw.middleware.schedule.DoJoinPoint;
import com.changanw.middleware.schedule.config.DcsSchedulingConfiguration;
import com.changanw.middleware.schedule.task.CronTaskRegister;
import com.changanw.middleware.schedule.task.SchedulingConfig;
import org.springframework.boot.autoconfigure.ImportAutoConfiguration;
import org.springframework.context.annotation.ComponentScan;
import org.springframework.context.annotation.Import;

import java.lang.annotation.ElementType;
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
import java.lang.annotation.Target;

/**
 * 这个注解是配置到应用程序的 XxxApplication 上，为了启动执行我们的中间件内容。
 * Retention 注释将由编译器记录在类文件中，并且在运行时由VM保留，因此可以反射地读取它们
 * Import 引入入口资源，在程序启动时会执行到自己定义的类中，以方便我们；初始化配置/服务、启动任务、挂在节点。
 * ComponentScan 告诉程序扫描位置，这里配置的位置就是中间件本身的位置。
 */
@Target({ElementType.TYPE})
@Retention(RetentionPolicy.RUNTIME)
@Import({DcsSchedulingConfiguration.class})
@ImportAutoConfiguration({SchedulingConfig.class, CronTaskRegister.class, DoJoinPoint.class})
@ComponentScan("com.changanw.*")
public @interface EnableDcsScheduling {
}
